MinGW

GNU make

MinGWをインストールするとGNU makeが使用できます。 makeの使い方が分かるとソフトウェア開発がグンと楽になると思いますので頑張って覚えましょう。 ...といっても難しそうなところは置いといて使い方だけ覚えれば大丈夫だと思います。 私(管理人)も実のところよく分かっていませんが実用上は問題ありません。


MinGWに付属する GNU make ですが、ファイル名が mingw32-make.exe となっていると思います。 このままでは使いにくいのでファイルをコピーして make.exe にリネームした方がよいでしょう。


まずはmakefileのスケルトンです。 これを少し修正して使いまわせば普通に使う分には問題ありません。

makefileスケルトン(makefile※注)

#ソースファイル(すべて列挙します)
#ここでは例として main.c と sub.c の2つを列挙しています。
SRC=main.c sub.c

#オブジェクトファイル
OBJS=$(SRC:.c=.o)

#作成する実行ファイル
TARGET=target.exe

#Cコンパイラ
CC=gcc

#コンパイルオプション
#CFLAGS=-Wall -O3	#-Wall はワーニングを表示、 -O3 は最適化オプション
CFLAGS=

#LDFLAGS=-mwindows

#削除コマンド
RM=del

#分割コンパイル(オブジェクトファイル作成)
# $@ ターゲットファイル(ここではオブジェクトファイル)名
# $< 最初の依存関係の名前
%.o: %.c %.h
	$(CC) $(CFLAGS) -o $@ -c $<

#デフォルトターゲット
.PHONY : all
all: $(TARGET)

# リンク
# $@ ターゲットファイル(ここでは target.exe)名
$(TARGET): $(OBJS)
	$(CC) $(OBJS) $(LDFLAGS) -o $@

#オブジェクトファイルをすべて削除
.PHONY : clean
clean:
	$(RM) $(OBJS)
※注 メイクファイルのファイル名は通常 makefile とし、拡張子は付けません。 理由はデフォルトファイル名が拡張子なしの makefile で、makeと入力すれば(makeを実行すれば)カレントディレクトリの makefile が読み込まれ、実行されるためです。



ちょこっと解説します。

  1. 最終的に作成したいファイルは TARGET で示される target.exe(実行ファイル)です。
  2. TARGET を作成するために必要なファイルは「リンク」のところで示される OBJS で、 OBJS はソースファイル(拡張子 .c)を .o に変更したファイルになります。
  3. .c ファイルは SRC で示される main.c と sub.c になります。 ソースファイル名が異なる場合には適宜書き換えて下さい。 また、もっとたくさんのソースファイルがある場合にはそれを追加してください。
  4. 「分割コンパイル(オブジェクトファイル作成)」のところで、
      %.o: %.c %.h
    と記述していますが、これは、
      main.c main.h sub.c sub.h
    というソースファイルとヘッダーファイルがあって、main.c内ではmain.hをインクルードしていて、 sub.c内ではsub.hをインクルードしているものとして記述しています。 もし仮に、ヘッダーファイルが1つ(header.h)しかないという場合には、
      %.o: %.c header.h
    と記述すればOKです。



make[Enter]
と入力すればコンパイル・リンクが実行され、実行ファイルが作成されます(エラーがなければですが...)。

make clean[Enter]
と入力すればオブジェクトファイルがすべて削除されます。



以上、非常に簡単な解説でしたがお分かり頂けたでしょうか?
なんとなく分かったら実際にやってみるとよいでしょう。



ページのTOPへ

メニュー